package cn.topcodes.tcsf.admin.scheduling;

import java.util.List;

/**
 * Created by Unicorn on 2017/9/28.
 */
public interface ScheduleService {

    /**
     * 添加任务
     * @param job   任务
     */
    void addJob(ScheduleJob job);

    /**
     * 获取所有任务
     * @return  任务列表
     */
    List<ScheduleJob> getAllJob();

    /**
     * 获取执行中的任务
     * @return  任务列表
     */
    List<ScheduleJob> getRunningJob();

    /**
     * 暂停任务
     * @param group	任务组
     * @param name 任务名
     */
    void pauseJob(String group, String name);

    /**
     * 恢复任务
     * @param group	任务组
     * @param name 任务名
     */
    void resumeJob(String group, String name);

    /**
     * 删除一个job
     *
     * @param group	任务组
     * @param name 任务名
     */
    public void deleteJob(String group, String name);

    /**
     * 立即执行job
     *
     * @param group	任务组
     * @param name 	任务名
     */
    public void runAJobNow(String group, String name);

    /**
     * 更新job时间表达式
     *
     * @param group 	任务组
     * @param name 		任务名
     * @param cron 		cron表达式
     */
    public void updateJobCron(String group, String name, String cron);

    /**
     * 检查cron表达式
     * @param cron  cron表达式
     */
    void checkCron(String cron);

    /**
     * 获取任务信息
     * @param group	任务组
     * @param name	任务名
     * @return	任务信息
     */
    ScheduleJob findBy(String group, String name);
}
